import javax.xml.soap.Node;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.LinkedList;
import java.util.Queue;
import java.util.Scanner;
//class node{
//    int x;
//    int y;
//    ArrayList<String> arr=new ArrayList<>();
//}
class Node1{
    int x;
    int y;
    public Node1(int x,int y){
        this.x=x;
        this.y=y;
    }
}
public class demo02 {
//    public static int[] di={0,1,0,-1};
//    public static int[] dj={1,0,-1,0};
//    public static void main(String[] args) {
//        Scanner sc=new Scanner(System.in);
//        int n=sc.nextInt();
//        int m=sc.nextInt();
//        int[][] arr=new int[n][m];
//        for (int i = 0; i < n; i++) {
//            for (int j = 0; j < m; j++) {
//                arr[i][j]=sc.nextInt();
//            }
//        }
//        arr[0][0]=2;
//        bfs(arr,0,0);
//    }
//    public static void bfs(int[][] arr,int i,int j){
//        Queue<node> queue=new LinkedList<>();
//        node tmp=new node();
//        tmp.x=0;
//        tmp.y=0;
//        String s="("+tmp.x+","+tmp.y+")";
//        tmp.arr.add(s);
//        queue.offer(tmp);
//        while (!queue.isEmpty()){
//            node tmp1=queue.poll();
//            for (int k = 0; k < 4; k++) {
//                int i1=tmp1.x+di[k];
//                int j1=tmp1.y+dj[k];
//                if(i1>=0&&i1<arr.length&&j1>=0&&j1<arr[i1].length){
//                    if(arr[i1][j1]==0){
//                        arr[i1][j1]=2;
//                        node tmp2=new node();
//                        tmp2.x=i1;
//                        tmp2.y=j1;
//                        String s1="("+tmp2.x+","+tmp2.y+")";
//                        tmp2.arr=new ArrayList<>(tmp1.arr);
//                        tmp2.arr.add(s1);
//                        queue.offer(tmp2);
//
//                        if(i1==arr.length-1&&j1==arr[i1].length-1){
//                            node tmp3=new node();
//                            while (!queue.isEmpty()){
//                                tmp3=queue.poll();
//                            }
//                            for (String str1:tmp3.arr) {
//                                System.out.println(str1);
//                            }
//                        }
//                    }
//                }
//            }
//        }
//    }

    //迷宫问题
    public static void main(String[] args) throws IOException {
        BufferedReader reader=new BufferedReader(new InputStreamReader(System.in));
        String str;
        while ((str=reader.readLine())!=null){
            String[] arr=str.split(" ");
            int row=Integer.parseInt(arr[0]);
            int col=Integer.parseInt(arr[1]);
            int[][] mat=new int[row][col];
            for (int i = 0; i < row; i++) {
                str=reader.readLine();
                arr=str.split(" ");
                for (int j = 0; j < col; j++) {
                    mat[i][j]=Integer.parseInt(arr[j]);
                }
            }
            ArrayList<Node1> path=new ArrayList<>();
            ArrayList<Node1> minpath=new ArrayList<>();
            int[][] book=new int[row][col];
            getMinPath(mat,row,col,0,0,book,path,minpath);

            for (Node1 n:minpath) {
                System.out.println("("+n.x+","+n.y+")");
            }
        }
    }
    public static void getMinPath(int[][] mat,int row,int col,int x,int y,int[][] book,ArrayList<Node1> path,ArrayList<Node1> minpaht){
        if(x<0||x>=row||y<0||y>=col||book[x][y]==1||mat[x][y]==1){
            return;
        }
        path.add(new Node1(x,y));
        book[x][y]=1;
        if(x==row-1&&y==col-1){
            if(minpaht.isEmpty()||path.size()<minpaht.size()){
                minpaht.clear();
                for (Node1 n:path) {
                    minpaht.add(n);
                }
            }
        }
        getMinPath(mat,row,col,x+1,y,book,path,minpaht);
        getMinPath(mat,row,col,x-1,y,book,path,minpaht);
        getMinPath(mat,row,col,x,y+1,book,path,minpaht);
        getMinPath(mat,row,col,x,y-1,book,path,minpaht);
        path.remove(path.size()-1);
        book[x][y]=0;
    }
}
